﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DataAccessLayer;
using BusinessLogicLayer;

namespace ChamCong
{
    public class BasePage : System.Web.UI.Page
    {
        public BasePage()
        {

        }
        protected override void OnLoad(EventArgs e)
        {
            ktDangNhap();
            base.OnLoad(e);
        }
        /// <summary>
        /// Kiểm tra session login
        /// Nếu chưa thì redirect tới trang đăng nhập
        /// Nếu đã đăng nhập thì kiểm tra quyền truy cập
        /// </summary>
        public void ktDangNhap()
        {
            if (HttpContext.Current.Session["MaNV"] == null)
            {
                //Hỗ trợ chuyển trang về trang trước khi login
                var ReturnUrl = Request.RawUrl;
                if (ReturnUrl != null)
                {
                    
                    Response.Redirect("~/TaiKhoan/DangNhap.aspx?ReturnUrl=" + ReturnUrl);    
                }
                else
                {
                    Response.Redirect("~/TaiKhoan/DangNhap.aspx");
                }
                
            }
            else
            {
                ktPhanQuyen();
            }
        }
        /// <summary>
        /// Kiểm tra phân quyền trên trang sau khi login thành công
        /// Nếu trang có phân quyền thì mới kiểm tra
        /// </summary>
        public void ktPhanQuyen()
        {
            int _MaNV = Convert.ToInt32(HttpContext.Current.Session["MaNV"]);
            PhanQuyenBLL pq = new PhanQuyenBLL();
            QuanLyPhanQuyenBLL q = new QuanLyPhanQuyenBLL();
            string strPath = this.Page.ToString().Substring(4, this.Page.ToString().Substring(4).Length - 5) + ".aspx";
            string strFullPath = strPath.Replace("_", "/");

            var lstPageRole = pq.layDSRoleTheoTenTrang(strFullPath);
            var lstUserRole = q.LayMaRoleTuNV(_MaNV);
            List<int> lstTemp = lstUserRole.Intersect(lstPageRole).ToList();
            if (lstPageRole.Count > 0)
            {
                if (lstTemp.Count == 0 && !lstUserRole.Contains(1))
                {
                    Response.Write("<script>alert('Bạn không có quyền truy cập trang này');window.location.href='/Default.aspx';</script>");
                }
            }

        }
    }
}